package com.codedancer.campus.client.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.codedancer.campus.client.service.bo.commodity.CommodityAddOrUpdateBo;
import com.codedancer.campus.client.service.bo.commodity.CommodityPageSearchBo;
import com.codedancer.campus.client.service.vo.commodity.CommodityVo;

public interface ICommodityService {

    /**
     * 发布商品
     * @param commodityAddOrUpdateBo 发布商品Bo
     */
    void publish(CommodityAddOrUpdateBo commodityAddOrUpdateBo);

    /**
     * 分页获取用户发布商品
     * @param commodityPageSearchBo
     * @return
     */
    IPage<CommodityVo> pageSearchUserCommodity(CommodityPageSearchBo commodityPageSearchBo);

    /**
     * 分页查询商品
     * @param commodityPageSearchBo
     * @return
     */
    IPage<CommodityVo> pageSearch(CommodityPageSearchBo commodityPageSearchBo);

    /**
     * 商品详情
     * @param commodityUuid
     * @return
     */
    CommodityVo detail(String commodityUuid);

    /**
     * 删除商品
     * @param commodityUuid
     */
    void delete(String commodityUuid);

    /**
     * 下架
     * @param uuid
     */
    void drop(String uuid);

    /**
     * 上架
     * @param uuid
     */
    void put(String uuid);

    /**
     * 收藏商品
     * @param uuid
     * @param currentLoginUuid
     */
    void collect(String uuid, String currentLoginUuid);

    /**
     * 是否收藏
     * @param uuid
     * @param currentLoginUuid
     * @return
     */
    Boolean isCollect(String uuid, String currentLoginUuid);

    /**
     * 取消收藏
     * @param uuid
     * @param currentLoginUuid
     * @return
     */
    void cancelCollect(String uuid, String currentLoginUuid);

    /**
     * 修改商品
     * @param commodityAddOrUpdateBo
     */
    void edit(CommodityAddOrUpdateBo commodityAddOrUpdateBo);

    /**
     * 同步自由广场
     * @param uuid
     */
    void syncLibertySquare(String uuid);

    /**
     * 取消同步自由广场
     * @param uuid
     */
    void cancelSyncLibertySquare(String uuid);
}
